home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #12 / Amiga Plus CD - 2002 - No. 12.iso / Tools / Development / qstat25b / CHANGES.txt next >
Text File  |  2002-11-18  |  45KB  |  1,345 lines

  1. QStat version 2.5b
  2. ** UPDATED for 2.5b **
  3. August 8, 2002
  4.  
  5. Whoops, I broke XQF.  When using QStat raw mode, XQF and other programs
  6. rely on the number of fields returned staying fixed.  I added a game/mod
  7. field to most raw output which breaks these programs.
  8.  
  9. Summary of New Features
  10. -----------------------
  11. Extended -raw with a -raw,game variation that adds the game/mod name to
  12.     the end of the raw server output.  Otherwise, the game/mod info
  13.     is not output in raw mode.
  14.  
  15. Thanks to Ludwig Nussel for not biting my head off (too much).
  16.  
  17. Steve, steve@qstat.org
  18.  
  19.  
  20. ** UPDATED for 2.5a **
  21. August 6, 2002
  22.  
  23. Final version of QStat 2.5a.  Please send feedback and bug reports
  24. to qstat-users@yahoogroups.com or to steve@qstat.org
  25.  
  26. This version of QStat is being distributed under the Artistic License.
  27. The terms of the license can be found in LICENSE.txt in the QStat package.
  28.  
  29. Summary of New Features
  30. -----------------------
  31. Config file support to define new game types
  32.     This is a major new feature.  This will allow users to define
  33.     new game types and master servers, including setting custom
  34.     request packets.  I expect that support for most new game types
  35.     will be accomplished via config files.
  36.     The default config file is "qstat.cfg".  More game types from
  37.     QStat users can be found in "contrib.cfg".
  38. Added support for "status port offset" to config file; UNS (unreal) has
  39.     this set to 1.  If you extend UNS, the new server type will have
  40.     the same status port offset.
  41. Added a GNUmakefile to support gmake
  42.     Updated COMPILE.txt with new instructions
  43. Improve Half-Life server status; extracts mod information and
  44.     secure status
  45. Add support for server rules template (-Tr file)
  46.     See qstatdoc.html for instructions.
  47. Support broadcast queries for Tribes and Tribes 2
  48. Star Trek: Elite Force server and master (-efs and -efm)
  49. Return to Castle Wolfenstein server and master (-rws and -rwm)
  50. Debug flag (-d)  (uses an improved packet output format)
  51. Support color player names in Soldier of Fortune
  52.  
  53. Default Config File (qstat.cfg)
  54. -------------------------------
  55. Command and Conquer: Renegade server (-crs)
  56. Soldier of Fortune 2 (-sof2s)
  57. Soldier of Fortune 2 Master (-sof2m)
  58. Medal of Honor: Allied Assault server (-mas)
  59. Medal of Honor: Allied Assault server, Quake 3 protocol (-maqs)
  60. Half-Life "infostring" protocol (-hlqs)
  61.     This is a Quake 2 style protocol
  62.  
  63. Fixes
  64. -----
  65. Fixed raw output to include the game or mod name as the last item
  66. Fix template to allow numbers, '.' and ' ' in rule names
  67.     Refers to $(RULE:someserverrule)  Allowing space ' ' may
  68.     break existing templates if they use syntax like
  69.         $RULE:maxbullets Max Bullets
  70.     This can be fixed by change it to $(RULE:maxbullets)
  71.     This change was made because SOF2 allows spaces in server rule
  72.     names.
  73. Fix Unreal and Gamespy based servers to support backslashes '\' in
  74.     player names (only partially worked before)
  75. Support Half-Life split packets; this happens to the rules info from
  76.     some Half-Life servers (usually AdminMod and DOD).
  77. XML output; added <?xml ...> element, UTF-8 output option (-utf8)
  78. XML; added <gametype>
  79. Fix crash on broadcast queries
  80. Avoid duplicates in the rule list
  81. Fixed -srcip to put address in the right byte-order
  82. Work-around for crash on Windows when bind() returns temporary error
  83. Finish output when -timeout expires
  84. Changed Q3 based servers to use a two-packet status query; I think
  85.     this gets more accurate mod information.
  86. More accurate player count on Quake based servers
  87. Compiles on OSX/Darwin
  88. Fix one byte overrun on QuakeWorld packet
  89.  
  90. New template variables
  91. ----------------------
  92. $TYPEPREFIX        The server's game type prefix
  93. $RULENAMESPACES        Allow spaces in rule names
  94. $RULETEMPLATE        Invoke the server rule template
  95. $RULENAME        The rule name
  96. $RULEVALUE        The rule value
  97. $(IF:RULENAME(name))    True if rule name equals "name"
  98. $(IF:RULEVALUE(value))    True if rule value equals "value"
  99. (see qstat.cfg for gametype variables)
  100.  
  101. Thanks
  102. ------
  103. Many thanks to all the beta testers for bug reports and feature
  104. suggestions.  There are many to list, but the following provided
  105. significant help:
  106. Kingsley Foreman, Mike Davis, Ludwig Nussel, Pierre Smolarek,
  107. aphax, and Simon Garner.   and I'm sure I forgot someone
  108.  
  109.  
  110. Steve, steve@qstat.org
  111.  
  112.  
  113. ** UPDATED for 2.4e **
  114. Oct 1, 2001
  115.  
  116. This release is basically to fix Tribes 2 support.  That was all my
  117. fault, Dynamix/Sierra did nothing wrong.  Since I was going through
  118. the trouble of a full release, I decided to toss in Descent 3 support.
  119. Don't be impressed, a patch for D3 was sitting in my inbox.  :-)
  120.  
  121. Summary of New Features
  122. -----------------------
  123. Descent 3 support
  124. -htmlmode (same as $HTML, but for -raw mode)
  125.  
  126. Fixes
  127. -----
  128. Fixed Tribes 2 queries
  129. Fixed $SHIRTCOLOR when no color names are used
  130.  
  131. Thanks
  132. ------
  133. Many thanks to Matthew Mueller for a patch to support Descent 3.
  134. Matthew thanks Brian Hayes, Kevin Bentley, and tcpdump.
  135. Thanks to Thomas Hager for putting me on the right track for the
  136. Tribe 2 bug.
  137.  
  138. Sorry, the real -noconsole support did not make it into this release.
  139.  
  140. Steve, steve@qstat.org
  141.  
  142.  
  143. ** UPDATED for 2.4d **
  144. August 8, 2001
  145.  
  146. Summary of New Features
  147. -----------------------
  148. Half-Life master filters
  149. Names for Quake 3 game types
  150. XML output mode
  151. Broadcast support for Gamespy style protocols
  152. Append output file option [-af]
  153. Option to print carets in Q3 player names [-carets]
  154. OS/2 Warp EMX compiler port
  155. OpenBSD support
  156. Options to specify source ports [-srcport] and source IP address [-srcip]
  157.     for packets sent by qstat.  Handy for getting through firewalls.
  158.     See docs for details.
  159.  
  160. Fixes
  161. -----
  162. Tribes 2 teamdamage flag
  163. Fixed writing beyond array bounds when reading templates on Windows.
  164.     (maybe this will fix the garbage characters some people see)
  165. Fixed player sorting for games with teams (tribes 1 and 2).
  166. Removed win32/qstat.exe from the tar.gz
  167. Trying the MS C 6.0 compiler again (win32/qstat.exe)
  168. Fixed running QStat from PHP; would crash or give no data
  169.  
  170. New template variables
  171. ----------------------
  172. $CLEARNEWLINES        Convert newlines to spaces in all variable output.
  173.             Handy for Tribes 2 servers with long descriptions.
  174. $GAMETYPE        Quake 3 only - the name of the game type
  175.  
  176. Thanks
  177. ------
  178. Most of this release was contributed by QStat users:
  179.  
  180. XML output            Simon Garner
  181. Half-Life master filters    Ludwig Nussel
  182. OS/2 Warp EMX            Mikulas Patocka
  183. OpenBSD                subset
  184.  
  185. A three rail gun salut to ya!
  186.  
  187. And thanks to Tahi 'Linus' Walcher for helping find the PHP bug.
  188. strace is a thing of the gods.
  189.  
  190. I was hoping to fix one other problem for Windows users.  QStat is a
  191. command-line style program, so Windows always gives it a console
  192. window.  This is annoying if you're running QStat from a web-page or a
  193. GUI server browser.  I can fix this, but it's not that easy.  In the
  194. mean time, I've added a -noconsole option that will delete the console
  195. as soon as qstat starts.  The effect is that a console window will
  196. flash on the screen briefly.  QStat still runs, you just won't see any
  197. output on screen.  Anyway, I'll craft a real implementation of
  198. -noconsole in the next release.
  199.  
  200. Steve, steve@qstat.org
  201.  
  202.  
  203.  
  204. ** UPDATED for 2.4c **
  205. Apr 19, 2001
  206.  
  207. Summary of New Features
  208. -----------------------
  209. Tribes 2 player type and tribe tag information
  210. Changed Quake 3 default version to "48" (1.27g)
  211. New Tribes 2 master filters. (see documentation)
  212.  
  213. Bug Fixes
  214. ---------
  215. Fixed win32/qstat.exe binary; re-compiled using old compiler
  216. Convert newlines into spaces when printing Tribes 2 server info
  217.     in raw mode.
  218. Fixed problems with the 22337 build of Tribes 2.
  219. Tribes 2 raw output is now the same format as most other servers.
  220.     Note that this reverses the order of current and max players
  221.     from what they were in 2.4b.  And adds ping and # retries values.
  222.  
  223. New template variables
  224. ----------------------
  225. $IF:ISBOT
  226. $IF:ISALIAS
  227. $IF:TRIBETAG
  228. $TRIBETAG
  229.  
  230. Notes
  231. -----
  232.     [ Blarg, I hate it when I blow a release.  Many people had
  233.       problems with the win32/qstat.exe in 2.4b release.  I had
  234.       compiled this with a new compiler version on a new Win2k
  235.       install.  It worked fine for me, but apparently the new
  236.       compiler has compatibility problems.  So, I've gone back
  237.       to the old compiler and old NT 4.0 install.
  238.       Several people also reported problems using 2.4b with the
  239.       new 22337 build of Tribes 2.
  240.       Sorry about the problems.  This release should fix things
  241.       up. ]
  242.  
  243. The new Tribes 2 player info is available in raw mode (see docs) and
  244. templates.  But it is not displayed in the interactive output.  I've
  245. updated the sample Tribes 2 templates to display the new player info.
  246.  
  247. Finally, there seem to be a number of bugs with the Tribes 2 master
  248. servers.  One of the bugs is noted in the documentation.  Dynamix is
  249. aware of the problems and working to fix them.
  250.  
  251. Steve, steve@qstat.org
  252.  
  253.  
  254. ** UPDATED for 2.4b **
  255. Apr 13, 2001
  256.  
  257. Summary of New Features
  258. -----------------------
  259. Support for Tribes 2 [-t2s] (builds numbered 22075 or higher)
  260. Support for Tribes 2 master [-t2m]
  261. Support for Quake 3 and Tribes 2 colorized player names [-htmlnames]
  262. Sample HTML templates for Tribes 2 [template/tribes2*]
  263. New QStat web site!   http://www.qstat.org
  264. New mailing lists for QStat users and announcements! (see web site)
  265.  
  266. New template variables
  267. ----------------------
  268. $ISMASTER
  269. $TRIBES2
  270. $TRIBES2MASTER
  271. $HTMLPLAYERNAME
  272.  
  273. Bug Fixes
  274. ---------
  275. Fix 'game' value for some Quake 2 based servers
  276. Fixed some cases where QStat will hang
  277. Fixed some picky compiler warnings
  278.  
  279. Notes
  280. -----
  281. The Tribes 2 master server has a number of fancy filtering options.
  282. Check the "Tribes 2 Master" section in the documentation for details.
  283.  
  284. Many thanks to Brad Heinz and Dynamix for their help with Tribes 2.
  285. Thanks to the QStat beta testers:
  286.     Dr. Chmod, Marauder, Leif Sawyer, Luca Spada, Simon Garner,
  287.     and Jose Ivey
  288.  
  289. Steve, steve@qstat.org
  290.  
  291.  
  292. ** UPDATED for 2.4a **
  293. Oct 5, 2000
  294.  
  295. Summary of New Features
  296. -----------------------
  297. Support for Gamespy master [-gsm]
  298. Support for "Gamespy style" protocol queries (adds 12+ games) [-gsm and -gps]
  299. More server sort options [-sort]
  300. Player sort options [-sort]
  301. Option to set the output file [-of]
  302. Quake 3 master query argument; can query by protocol version
  303.  
  304. Other Improvements
  305. ------------------
  306. Way way way faster
  307. Fixed Q3 master server queries
  308. Fixed queries of SoF 1.05 servers
  309. Servers now queried in the order provided to QStat (was reverse order)
  310. Fixed ^ display in Q3 player names
  311. Partial fix for '\' in player names
  312. Players now displayed in the order the server reports them (was reverse order)
  313. Rules now displayed in the order the server reports them (was reverse order)
  314. Server variables can be referenced inside player templates
  315. Fixed raw display of SoF servers
  316. Improved HalfLife queries; fetches sv_type and sv_os server rules
  317. Much much much faster
  318.  
  319. New template variables
  320. ----------------------
  321. $IF:GAMESPYMASTER
  322. $IF:GAMESPYPROTOCOL
  323.  
  324. Notes
  325. -----
  326. I'm probably treading on some toes with the Gamespy master support.
  327. Someone figured out that the Gamespy server lists are not protected,
  328. and sent me the protocol.  Once I had that, supporting the master was
  329. trivial.  See the documentation for details on using a gamespy master.
  330.  
  331. Many games are using the Unreal style server status protocol.  Maybe
  332. because there are lots of Unreal engine games.  Or maybe because
  333. developers want Gamespy support, so they use a protocol that Gamespy
  334. already supports.  There are too many of these games to add individual
  335. game types and command-line options.  So I've lumped them together as
  336. "Gamespy Protocol" servers using the game type "GPS".  They all seem
  337. to have a server rule called "gamename" set to the name of the game
  338. (eg. "roguespear", "turok2").
  339.  
  340. I made a pile of performance improvements to QStat.  Start-up time for
  341. large server lists is very fast.  Queries on large servers lists is
  342. also much faster.  And queries require much less CPU time.  If you
  343. have -maxsim set high to reduce query times, you might see more
  344. server timeouts now.  QStat can spew out packets so fast, you'll see
  345. more packet loss and hence more timeouts.
  346.  
  347. Thanks
  348. ------
  349. Many thanks to the beta testers and contributors.  They provided
  350. bug fixes, bug reports, suggestions, ideas, protocol traces, and
  351. kind words.  I'll spare them the spam by just mentioning real names:
  352.  
  353. Alex Burger, Conan Ford, Vitaliy Fuks, Mike Dowell, Nico de Vries,
  354. and Jose Ivey
  355.  
  356.  
  357. Steve
  358.  
  359.  
  360. ** UPDATED for 2.3g **
  361. Feb 3, 2000
  362.  
  363. BETA is done!  The 2.3 release is stable enough now to drop the
  364. beta qualifier.
  365.  
  366. Summary of New Features
  367. -----------------------
  368. Added options to support Soldier of Fortune [-sfs]
  369.  
  370. New template variables
  371. ----------------------
  372. $IF:SOLDIEROFFORTUNE
  373.  
  374. There are command-line options to control the following, but it's
  375. handy to have control within the templates as well.
  376. $COLORNUMBERS        Set the format of $SHIRTCOLOR and $PANTSCOLOR
  377. $COLORNAMES
  378. $COLORRGB
  379. $TIMESECONDS        Set the format of $CONNECTTIME
  380. $TIMECLOCK
  381. $TIMESTOPWATCH
  382.  
  383. Summary of Fixes
  384. ----------------
  385. Fix crashes in Unreal -raw player output (duh).
  386. Fix hangs doing Unreal server queries.
  387. Fix $GAME for Quake 3 servers
  388. Fix Kingpin servers reported as Q2 servers
  389.  
  390. Notes
  391. -----
  392. The SOF server does not return map information, so you'll just get a
  393. '?' or blank for an SOF map.  The map info is returned by the master
  394. server.  But QStat does not yet support the SOF master server.  I
  395. traced the SOF master protocol, but it's totally different from any
  396. other master server.  Before I invest the time into writing a
  397. parser for the SOF master packets, I'm going to wait to see if it
  398. changes before the final retail release.
  399.  
  400. Notes on Future Releases
  401. ------------------------
  402. Now that the 2.3 release train is winding down, what's up for
  403. QStat 2.4?  I don't know, but there's a few frequently requested
  404. features:
  405.  - More sort options; server and player
  406.  - More games; Delta Force, Descent III
  407.  - Fetch server lists from web pages
  408.  - Better templates; variables and full expression evaluation
  409.  - Better performance on large server lists
  410.  - Examples and samples
  411.  
  412. I don't know which features will be available when, so don't ask.
  413.  
  414. There may be one or two more 2.3 releases to fix critical bugs or
  415. add a new game.
  416.  
  417. Getränk und ist fröhlich,
  418.  
  419. Steve
  420.  
  421.  
  422. ** UPDATED for 2.3f BETA **
  423. Jan 11, 2000
  424.  
  425. Summary of Fixes
  426. ----------------
  427. Added player ping and face to Unreal -raw output
  428. Fix queries for version 405 Unreal servers
  429.  
  430. New template variable
  431. ---------------------
  432. For the player template:
  433. $FACE       The texture used on a player's face.
  434.             This was added to Unreal a while back, but I didn't notice.
  435.  
  436. Notes
  437. -----
  438. The fine blokes at Unreal decided to fiddle with the Unreal query
  439. protocol.  When asked why PingTool and QStat did not work with the
  440. new servers, they responded that we must not be following the new
  441. GameSpy spec.  Ha!  As if they publish this information or care to
  442. keep other server browser authors informed.  Sheesh.
  443.  
  444. Steve
  445.  
  446.  
  447. ** UPDATED for 2.3e BETA **
  448. Jan 7, 2000
  449.  
  450. Summary of Fixes
  451. ----------------
  452. Quake III Arena master queries
  453. Half-Life master queries
  454. $(IF:GAME) was true when $GAME was blank (Tribes)
  455. Improved Q3A player name translation
  456. Fixed raw mode output for Unreal (minor incompatible change)
  457. Updated docs for raw mode output
  458. Add one to Unreal/UT port to get query port (incompatible change)
  459. $GAME and "-sort g" now work for Unreal/UT
  460.  
  461. Summary of New Features
  462. -----------------------
  463. Options added for Kingpin and Heretic II game servers.  These
  464. two games were previously supported with the -q2s option.
  465.  
  466. New options: -kps and -hrs
  467. New template conditions: $(IF:KINGPIN) and $(IF:HERETIC2)
  468.  
  469. Notes
  470. -----
  471. Numerous people sent me the fix for the Q3A master query problem.  I
  472. think the first was Ted Milker, but thanks to all for your suggestions
  473. and patience.
  474.  
  475. The Half-Life master support wasn't using the latest protocol, so
  476. needed an upgrade.  Now you can get the full 2100+ server list from
  477. the master.  BTW, there are more HL servers than Q3A servers.
  478.  
  479. Unreal support was changed to automatically add one to the port number
  480. to find the query port.  This is probably why people thought QStat
  481. didn't support UT.  For those that figure it out already, you'll have
  482. to remove your own +1 hacks to use this release.
  483.  
  484. I apologize for the long delay between releases.  Work, holidays, and
  485. health problems cut my free time to less than zero.
  486.  
  487. Best wishes for the new millennium,
  488.  
  489. Steve
  490.  
  491.  
  492.  
  493. ** UPDATED for 2.3d BETA **
  494. May 12, 1999
  495.  
  496. More bug reports and suggestions prompted this release.
  497.  
  498. Quake 3 master
  499. --------------
  500. The id Q3 master server isn't working very well.  The protocol is lame
  501. and its network is way over subscribed.  I've enhanced QStat to deal
  502. with the changes, but I actually think they (id) have made matters worse
  503. rather than better.  QStat can now, sometimes, get all the servers
  504. from the master, but it often can't get 30-60% of the servers.  This
  505. is not QStat problem, but id's.  I've sent them a detailed analysis
  506. of the problems and made some suggestions.
  507.  
  508. Summary of Fixes
  509. ----------------
  510. Improve reliability of Q3 master server queries
  511. Support Tribes servers with 3+ teams
  512. Strip escape sequences from Q3 player names; use -hpn if you want the
  513.     complete content of player names.
  514. Accurately calculate number of servers on a master (ignore duplicates).
  515. Fixed $(ISFULL) to be false if the server is empty [duh]
  516.  
  517. New Features
  518. ------------
  519. New option to control master server retry interval ("-mi") independent
  520.     of server retry interval.
  521. Increase maximum -maxsim to 256 for Win32.
  522. Added $(TYPESTRING) template var; shows server's type string (eg. q2s, hls)
  523. Added $(NOWINT) template var; shows the current time in seconds since
  524.     00:00:00 UTC, January 1, 1970.
  525.  
  526.  
  527. Notes
  528. -----
  529. Many many thanks to Nico de Vries (Nico.de.Vries@ucc.nl) of CLQ for
  530. the many bugs reports, suggestions, etc.  Thanks to stincey@nireland.com
  531. for figuring out the Tribes 3+ teams bug.
  532.  
  533.  
  534. Steve, steve@activesw.com
  535.  
  536.  
  537.  
  538. ** UPDATED for 2.3c BETA **
  539. May 3, 1999
  540.  
  541. A slew of bug reports arrived over the weekend.  I guess QStat users
  542. are weekend warriors.  Thanks to the four people that sent patches for
  543. the Q3 master breakage.  I won't say who's patch I used, but I
  544. selected the most elegant.
  545.  
  546. id has said that the Q3 master protocol will be changing alot over
  547. the next weeks.  I'll try to track their progress, but no promises.
  548. They also asked for suggestions on reducing packet size, so I sent
  549. them my ideas (all quite clever <puff> <puff>).
  550.  
  551. Summary of Fixes
  552. ----------------
  553. Q3 master server
  554. Q3 server name
  555. Tribes -raw mode [forgot to write it]
  556. Removed leftover debug print
  557. Switched snprintf() to sprintf() [much more portable]
  558. Half-Life game rules [useful for TFC]
  559. Fixed -progress output
  560. Added player ping to Unreal player output
  561. Fixed minor mistakes in docs
  562.  
  563. Notes
  564. -----
  565. Many thanks to:
  566. "Dark Grue" <darkgrue@iname.com> of QStatList
  567. Nico de Vries <Nico.de.Vries@ucc.nl> of CLQ
  568. "Joe S." <jszabo@eden.rutgers.edu> of ... I forget what Joe does
  569. Sven Grundmann <grundema@uni-duesseldorf.de>
  570.  
  571. for their bug reports, patches, and suggestions.
  572.  
  573. Steve, steve@activesw.com
  574.  
  575.  
  576. ** UPDATED for 2.3b BETA **
  577. April 29, 1999
  578.  
  579. New: Quake III and BFRIS support
  580. Not many complaints about problems with 2.3a, looks like the
  581. new code is working fine.
  582.  
  583. Summary of New Features
  584. -----------------------
  585. Quake III: Arena (Q3Test)
  586. Quake III master
  587. BFRIS (www.aegistech.com)
  588.  
  589. Minor Changes
  590. -------------
  591. A couple people pointed out that the docs and the code did not
  592. exactly agree on the server type strings.  So, I've fixed the
  593. code to match the docs.  The following type strings were changed:
  594.  
  595. 2.3a            2.3b
  596. ----            ----
  597. QW    -->    QWS
  598. Q2     -->    Q2S
  599.  
  600. Notes
  601. -----
  602. Voluminous thanks to Dave "Zoid" Kirsch of id Software for supplying
  603. diffs to support Quake III.  Zoid says has used QStat "from time to time"
  604. over the years.  Makes me smile.
  605.  
  606. And a sweeping bow to Pete Ratzlaff of Harvard for the diff to support
  607. Linux game BFRIS.  See www.aegistech.com for info.
  608.  
  609. I gave the diffs the wary eye for fuggly programming, but both were
  610. written nicely and applied without a hitch.  I performed minimal
  611. testing of the new code, please let me know if there are problems.
  612.  
  613. Steve, steve@activesw.com
  614.  
  615.  
  616. ** UPDATED for 2.3a BETA **
  617. April 19, 1999
  618.  
  619. Lots of changes and additions in this release, far more than I have
  620. patience to test.  Please try this release with your web page, stats
  621. program, server browser, and what not.  If you encounter any problems
  622. _please_ send me email!  Flames on my sloppy coding are acceptable.
  623.  
  624. Summary of New Features
  625. -----------------------
  626. Complete Half-Life support (players and server rules)
  627. Half-Life master server        (option -hlm)
  628. Tribes servers            (option -tbs)
  629. Tribes master server        (option -tbm)
  630. Shogo                (option -sgs)
  631. Hex player colors        (option -hc)
  632. Several new template variables
  633. Created server types table to simplify code
  634.  
  635. Bug Fixes
  636. ---------
  637. Servers without "hostname" rule appeared to TIMEOUT
  638. One or two other boo-boos
  639.  
  640. Incompatible
  641. ------------
  642. The option "-qw" has been removed.  Please use "-qwm" instead.
  643.  
  644. New variables for output templates
  645. ----------------------------------
  646. Generic variables
  647. $(DEFAULTTYPE)    Full name of the default server type (-default)
  648. Server variables
  649. $(ISEMPTY)    True if the server has no players
  650. $(ISFULL)    True if the server is full of players
  651. Player variables
  652. $(PACKETLOSS)    Players packets loss (Tribes only)
  653. $(ISTEAM)    True if this player represents a team (Tribes only)
  654. $(TEAMNAME)    Name of this player's team (Tribes only)
  655.  
  656. Notes
  657. -----
  658. Many thanks to the following for their assistance:
  659. zarjazz@barrysworld.com            Tribes
  660. seb@club-internet.fr, carl@d-n-a.net    Shogo
  661. sean@msiconsulting.com            Half-Life
  662.  
  663. Thanks to the many people who have sent suggestions for improvements.
  664. I've incorporated some of them in this release, more will follow in
  665. later releases.
  666.  
  667. This release was focused on supporting popular new games and making
  668. it easier to add new games to the code.  The backlog of new games
  669. support is now empty.  If there's a game you would like to see
  670. supported, please send email.  The Linux game BFRIS
  671. (http://www.aegistech.com) is the only planned new game support.
  672.  
  673. Steve, steve@activesw.com
  674.  
  675.  
  676.  
  677. ** UPDATED for 2.2b **
  678. Jan 15, 1999
  679.  
  680. D'oh!  I need to do more testing.  The -raw mode did not work at
  681. all for Half-Life.  Thanks to Dark Grue <darkgrue@iname.com> for
  682. bring that to my attention.
  683.  
  684. Bug Fixes
  685. ---------
  686. Fix Half-Life support with -raw mode
  687. Shush compiler warning on Linux
  688.  
  689.  
  690. Steve, steve@activesw.com
  691.  
  692.  
  693. ** UPDATED for 2.2a **
  694. Jan 14, 1999
  695.  
  696. Not too much in this release, but I've been getting an email a day
  697. asking about Half-Life support.  The Half-Life status packets are
  698. totally different from Quake II, so I've only completed the general
  699. info so far.  Players and rules from Half-Life will be available in the
  700. next release.  I also threw in flags to support Sin.  Sin was
  701. supported in previous releases by pretending it was a Q2 server, but
  702. now it has its own flags.
  703.  
  704. Future releases of QStat will support even more games (Shogo, Blood 2,
  705. Heretic 2, etc).
  706.  
  707. Summary of New Features
  708. -----------------------
  709. Sin support                (option -sns)
  710. Half-Life (partial) support        (option -hls)
  711.  
  712. Bug Fixes
  713. ---------
  714. Divide-by-zero bug with sorting
  715. Memory allocation bug using -H (hostname lookup)
  716.  
  717. New variables for output templates
  718. ----------------------------------
  719. Server template variables
  720. $SIN        True if the server is running Sin
  721. $HALFLIFE    True if the server is running Half-Life
  722.  
  723.  
  724. Steve, steve@activesw.com
  725.  
  726.  
  727.  
  728. ** UPDATED for 2.1a **
  729. Oct 4, 1998
  730.  
  731. This release supercedes previous 2.1 releases (2.1z BETA and 2.1y BETA)
  732.  
  733. Summary of New Features
  734. -----------------------
  735. Unreal 2.15+ support            (option -uns)
  736. Broadcast queries            (prefix address with '+')
  737. Save lists from master servers        (option -qw,outfile and -q2m,outfile)
  738.  
  739. Bug Fixes
  740. ---------
  741. Fixed host cache on Intel platforms
  742. Report Host Not Found as a server error (so it appears in templates
  743.     and raw output)
  744.  
  745. New variables for output templates
  746. ----------------------------------
  747. Server template variables
  748. $HOSTNOTFOUND    True if the host name lookup failed
  749.  
  750. Player template variables
  751. $MESH        Player mesh (model) name (Unreal only)
  752.  
  753. Notes
  754. -----
  755. QStat will support the public Unreal master server once it's
  756. done.  The current Unreal master server is private to GameSpy
  757. (snarl).
  758.  
  759. The broadcast queries is an experimental feature.  I've only
  760. tested it with Quake II.  Other games will be tested and
  761. supported in later releases.  For example, querying the local net for
  762. Q2 servers on the default port:
  763.     qstat -q2s +255.255.255.255
  764. The '+' makes QStat broadcast to the given address.  The default
  765. broadcast address for all nets is 255.255.255.255.  You can
  766. also use a network specific broadcast (eg. 199.2.18.255).  On
  767. Unixes, 'ifconfig -a' will display the broadcast address for
  768. all attached networks.
  769.  
  770. The ",outfile" option for master servers is handy for dealing with
  771. unreliable master server (such as the id Q2 master).  Run qstat
  772. once to save the servers lists to files, and a second time to
  773. query the servers:
  774.     qstat -q2m,outfile satan.idsoftware.com,idq2.lst
  775.     qstat -f idq2.lst
  776. The first command saves the server list from the id Q2 master into
  777. "idq2.lst".  If the master isn't working, then the file retains
  778. its previous contents.  The second command queries the servers in
  779. that file.
  780.  
  781. I've also included the templates for an example Unreal server
  782. list web page.
  783.  
  784. Thanks to my wonderful users for reporting bugs and making
  785. suggestions.  And a special thanks to the Unreal development team for
  786. actually documenting their query protocol (unlike some other well known
  787. first person shooter developers).
  788.  
  789. Steve, steve@activesw.com
  790.  
  791.  
  792.  
  793. ** UPDATED for 2.1y BETA **
  794. Aug 22, 1998
  795.  
  796. Summary of New Features
  797. -----------------------
  798. HexenWorld support
  799. Revived support for id's Q2 master
  800. New variables for output templates
  801. Faster host cache initialization
  802. More efficient server query (Unix only)
  803. Support for AIX 4.2 and HPUX 11.0
  804.  
  805.  
  806. Bug Fixes
  807. ---------
  808. Fixed bogus query failure on second server on same IP address.
  809. Fixed to ignore QW and Q2 server packets that contain lots of error
  810.     messages.  Also disabled printing of the "Odd packet" messages.
  811.     They can be enabled with the -errors option.
  812. Fixed output templates on Windows
  813.  
  814. Non-feature
  815. -----------
  816. Unreal support.  Unreal needs to get fixed before QStat can support it.
  817.  
  818.  
  819. HexenWorld support
  820. ------------------
  821. Use the -hws command line option, or the HWS server type key.
  822.  
  823. Revived support for id's Q2 master
  824. ----------------------------------
  825. id's Quake II master server was broken for a long time.  QStat
  826. supported id's Q2 master, but the master only rarely returned anything
  827. (and you had to wait up to 30 seconds for a response).  When QuakeSpy
  828. announced that id had fixed their Q2 master, I was surprised that QStat
  829. did not work on the fixed master.  Turns out the "fix" also changed the
  830. query protocol slightly.
  831.  
  832. New variables for output templates
  833. ----------------------------------
  834. General variables
  835. $\        Inhibit output of the next newline.
  836.  
  837. Server template variables
  838. $HEXENWORLD    True if the server is HexenWorld (use with $IF)
  839. $UNREAL        True if the server is Unreal (use with $IF)
  840.  
  841. Player template variables
  842. $DEATHS        Number of deaths (Unreal only)
  843. $TEAMNUM    Team number (Unreal only)
  844.  
  845. un-Unreal support
  846. -----------------
  847. I implemented support for the original Unreal server status protocol.
  848. However, the Unreal server worked so poorly as to be unusable.  Unreal
  849. is getting improved Internet support, but it's not ready yet.  When
  850. Unreal gets fixed, QStat will support the new protocol.
  851.  
  852.  
  853. I've also included the templates I use for the status page of my
  854. own Quake II servers.
  855.  
  856. Steve, steve@activesw.com
  857.  
  858.  
  859.  
  860. ** UPDATED for 2.1z BETA **
  861. Feb 28, 1998
  862.  
  863. Summary of New Features
  864. -----------------------
  865. Output templates (HTML generation)
  866. Server sorting
  867. Host name and IP address cache
  868. Support for Quake II master
  869.  
  870. New Flags
  871. ---------
  872. See the documentation (qstatdoc.html) for complete details.
  873.  
  874. -default server-type
  875.     Set the default server type which should be one of: QS, QW, QWM,
  876.     H2S, Q2, or Q2M.
  877. -Hcache file
  878.     Host name cache file
  879. -sort sort-key
  880.     Sort the servers by the sort-key
  881.     p    sort by ping
  882.     g    sort by game
  883. -Tserver file
  884.     Server output template.  Displayed once per server.
  885. -Tplayer file
  886.     Player output template.  Displayed once per player (if -P is used)
  887. -Theader file
  888.     Header output template.  Displayed once before any servers are output
  889. -Ttrailer file
  890.     Trailer output template.  Displayed once after all servers and players
  891.     are output.
  892. -q2m    Get servers from Quake II master server
  893.  
  894. Summary of Enhancements
  895. -----------------------
  896. Remove duplicate server addresses before query
  897. Reduce memory usage when -R and/or -P are not specified
  898. Work-around a memory leak in Solaris 2.5
  899. Wait for results from all master servers before starting to query servers
  900. VMS support
  901.  
  902. Release Notes
  903. -------------
  904. This is a major new release of QStat.  There is over 1400 lines of new
  905. code with all the benefits and drawbacks therein.  I hope you like the
  906. features, but I really hope it's not riddled with bugs.  There might be
  907. some portability issues since I only have access to Solaris, HP-UX, Irix,
  908. and Windows NT.  If you have a problem compiling, please send me a note.
  909.  
  910. No major new features are planned for 2.1 beyond what you see here.
  911. However, I plan to make enhancements to the sorting and template code
  912. before final release.  Please tell me what is missing.  Obvious
  913. deficiencies include:
  914. - No per-server output files (can't have a server list with a link
  915.   to a page with details about each server).
  916. - Missing $ELSE ($IFNOT is a cheap replacement)
  917. - Flexible $IF expressions would be nice
  918. - The output template variable syntax is kinda lame: you use
  919.   $(IF:RULE(email)) to test for a rule and $(RULE:email) to output the value
  920. - Can only sort on ping and game.  Would like to add map, players, etc
  921. - Can't sort the player lists
  922. - Host cache administration might be nice (re-verify command)
  923. - Host cache sharing.  Use file locking to allow multiple qstats to
  924.   share the same host cache.
  925.  
  926. Presence on the list above does not guarantee implementation!  Please
  927. tell me what you want, even if it's listed above.
  928.  
  929. A host name cache can take a _long_ time to build the first time (30
  930. minutes, minimum).  I will try to keep starter cache files on the QStat
  931. web site.  The current cache file for servers in the QW masters
  932. contains over 1000 entries.
  933.  
  934. I've included sample output templates for HTML.  They are not the
  935. best HTML, but they demonstrate some of the neat tricks you can do.
  936. If you use the templates with '-R', then server rules like email
  937. and web will be output as links next to the server.  If you get
  938. player status (-P), then a subtable is output with player info
  939. formatted with the correct columns for the server type.  A sample
  940. command line to use the templates:
  941.  
  942. qstat -f myservers.txt -Ts template/server1.html -Th template/header1.html
  943.     -Tp template/player1.html -Tt template/trailer1.html > myservers.html
  944.  
  945. (The template files in qstat21z.zip have a ".htm" extension)
  946.  
  947. Finally, the id Quake II master has a bug (gasp!) that makes it _very_
  948. slow to respond some times.  QStat tries to work-around the bug by
  949. increasing the retry interval by 20 times while waiting for a response
  950. from a Quake II master.  The retry interval is restored once all the
  951. masters have been queried.
  952.  
  953. Thank you for your support.
  954.  
  955.  
  956.  
  957. ** UPDATED for 2.0b **
  958. Dec 29, 1997
  959.  
  960. - Fix map name for Quake II 3.07-09
  961.   The rule key changed from "map" to "mapname".  If both are present,
  962.   then "mapname" takes precedence.
  963. - Q2: Noticed some servers are running custom games.  The rule keys for
  964.   games are confusing:
  965.     "gamename"    Always seems to be set to "baseq2", unless a
  966.             custom game is being run, in which case "gamename"
  967.             is not set at all.
  968.     "gamedir"    Probably the same as "*gamedir" in QW.
  969.     "game"        Always the same as "gamedir" in the servers I
  970.             stat'd.  Maybe this can be used to indicate the
  971.             name as well as the version of the game being
  972.             run.
  973.   For now, QStat displays the value of the "game" key in the non-raw
  974.   output of Q2 servers.
  975. - Print file name and line number information with errors when reading
  976.   files.
  977. - new option: -progress    display progress meter
  978.     Thanks maynard@ultra.net
  979.  
  980. Leave for the Holidays and the id boys change the protocol.  A minor
  981. change, but a few QStat users noticed right away.  The change does
  982. not affect people using -raw.
  983.  
  984.  
  985.  
  986. ** UPDATED for 2.0a **
  987. Dec 9, 1997
  988.  
  989. - Support for Quake II servers, see documentation for usage.
  990. - Minor fix to connect time formatting.
  991.  
  992. I don't have Quake II, but the status protocol is very similar to
  993. QuakeWorld, so I was able to figure it out by poking existing Quake II
  994. servers on the net.  Id has stated that the network protocol will
  995. get an upgrade soon after the in-store release.  As always, QStat
  996. will track these changes as they become available.
  997.  
  998.  
  999.  
  1000. ** UPDATED for 1.6 **
  1001. Nov 30, 1997
  1002.  
  1003. Changes since beta5.  Minor enhancements and a few fixes.
  1004.  
  1005. - Removed all the annoying copyright restrictions.
  1006. - Added option -ne : no empty servers
  1007.     Thanks secabeen@fnord.rh.uchicago.edu
  1008. - Added option -raw-arg : special for QStatList (see qstat docs)
  1009.     Thanks darkgrue@iname.com
  1010. - Added option -timeout : total time in seconds before giving up
  1011.     Can prevent overlapping runs when cron runs qstat every five
  1012.     minutes.
  1013. - Added gamedir to QW server output (not -raw)
  1014. - Fixed bug getting long server lists from QuakeWorld masters.  Can now
  1015.   get lists in excess of 16,000 servers.  How long til that limit is
  1016.   exceeded?
  1017. - Fixed bug using -H with -qw
  1018. - Fixed use of select() so systems with large file descriptor limits
  1019.   can query more than 64 servers at a time.
  1020. - Overhauled the web page, but it is still gif-less.
  1021.  
  1022. QStat 1.6 has been in alpha / beta just short of a year (1.6 alpha
  1023. was released Dec 20, 1996).  It has been a good year.  Many thanks
  1024. to those who sent suggestions, kind words, and bug reports.  And
  1025. appologies to those who have not seen their request implemented,
  1026. or who did not even receive a reply.
  1027.  
  1028.   "Mmmgufm gumerfm rerfgmmf."
  1029.   "That's right, Kenny, Steve is a busy guy and doesn't care about
  1030.    your stupid problems."
  1031.   "Merfgl! gumerfm rerfgmmf!"
  1032.   "Dammit, Kenny, turn down the computer, I can't hear you over the
  1033.    splattering bodies."
  1034.   "Gumerfm rerfgmmf."
  1035.   "Oh.  Kenny says, Steve does care about your problems, but not the
  1036.    stupid ones."
  1037.   [ A large core dump falls on Kenny, killing him. ]
  1038.   "Steve killed Kenny!  You bastard!"
  1039.  
  1040. Quake II gives me an excuse to crank up the major version dial.
  1041. QStat 2.0 will feature support for Quake II servers.
  1042.  
  1043.  
  1044.  
  1045.  
  1046. ** UPDATED for 1.6 beta5 **
  1047. Oct 5, 1997
  1048.  
  1049. Kitchen sink release to add some of the most requested features.
  1050.  
  1051. - Extended file format.  The file used with the -f option can include
  1052.   server type information to distinguish between Hexen II, Quake, and
  1053.   QuakeWorld servers.  You can put all your servers into one file and
  1054.   query them all with one qstat invocation.
  1055. - Fix bug that caused a QuakeWorld master server query to never timeout.
  1056. - New option -h2s for specifying a single Hexen II server to query.
  1057. - New option -maxsimultaneous limits the number of simultaneous server
  1058.   queries.  Previously configurable by modifying the MAXFD #define in
  1059.   qstat.h.
  1060. - Updated docs [FINALLY!]
  1061. - Compiles on HP-UX 10.20
  1062. - Changed packaging: files are in a directory named for the version
  1063.   of qstat, and use gzip instead of compress on unix
  1064. - Removed pre-QuakeWorld 1.5 support.  The -qw1.5 option is obsolete
  1065.   and no longer needed.  As are the -qwuserinfo and -qwseeninfo options.
  1066. - Smarter about when to include server type prefix in formatted output
  1067.  
  1068. Unless I hear cries for more features, this will be the last beta
  1069. before the final release of qstat 1.6.  Now that the docs are up to
  1070. date, I've run out of excuses for doing the release.
  1071.  
  1072.  
  1073.  
  1074. ** UPDATED for 1.6 beta4 **
  1075. Sept 2, 1997
  1076.  
  1077. Qstat has gone through some minor revs of beta3 and the arrival of
  1078. Hexen II sparked the need for another release.  Summary of fixes and
  1079. changes:
  1080.  
  1081. - Support for Hexen II servers.  Use the -hexen2 mode to query Hexen II
  1082.   servers:
  1083.     qstat -hexen2 -R -P 165.166.143.15 208.131.24.189
  1084.   You cannot mix queries of Quake and Hexen II servers.  This limitation
  1085.   will be fixed in the final 1.6 release.  However you can mix QW and
  1086.   Hexen II queries in one qstat command.
  1087.   [Thanks to Michael Long, mlong@infoave.net, for getting me the protocol
  1088.    magic for Hexen II.]
  1089. - In the formatted display output (as opposed to -raw), a Hexen II server
  1090.   is indicated with a H2S prefix.  This will only be seen if qstat is
  1091.   using different quake protocols at the same time (eg. query a Hexen II
  1092.   and QW server in the same command).
  1093. - Various fixes to deal with bogus packets from QW servers.  The lastest
  1094.   one is caused when the QW server info packet is truncated.  It appears
  1095.   that there is a fixed buffer of 1600 bytes in the QW server for building
  1096.   server info responses.  The QW server programmers may want to consider
  1097.   increasing this value.  On Ethernet, two packets must be used to send
  1098.   1600 bytes (Ethernet frame size 1518, subtract ~50 for header, leaving
  1099.   ~1468 for data).  Might as well set the buffer size to ~3000 bytes so
  1100.   two full packets can be used.
  1101. - There's some wierd problem on Linux which causes bind() to occasionally
  1102.   fail with EADDRINUSE.  Fixed the code to consider this a transient
  1103.   error and retry the address at a later time.  If you saw messages like:
  1104.     bind: Address already in use
  1105.     send: Invalid argument
  1106.   from qstat, then this fixes that.
  1107.  
  1108. No time table for the final 1.6 release.  Other than updating the docs,
  1109. I don't plan any significant new features.
  1110.  
  1111.  
  1112.  
  1113. ** The docs have not yet been updated.  This is all you get for now. **
  1114.  
  1115. ** UPDATED for 1.6 beta3 **
  1116. April 3, 1997
  1117.  
  1118. D'oh!  Should never do releases just after midnight.  Beta2 had an
  1119. old win32 executable.  Also forgot to check for NULL map name in
  1120. the -raw display code.  Sorry!
  1121.  
  1122.  
  1123. ** UPDATED for 1.6 beta2 **
  1124. April 2, 1997
  1125.  
  1126. Features in 1.6 beta2 beyond beta1
  1127. Fix crash on negative player colors
  1128. New option -qw1.5
  1129.     Use the QuakeWorld 1.5 protocol.  Affects the interaction
  1130.     with a QW master (-qw).  Fortunately, the rest of the protocol
  1131.     hasn't changed.  I imagine the user and seen info won't be
  1132.     available from a QW 1.5 master.  The user and seen flags will
  1133.     remain until I have a better understanding of where QW is going.
  1134.  
  1135. Had to fix a bunch of crashes related to QW 1.5 servers.  Some of them
  1136. don't have common keys like "map".
  1137.  
  1138.  
  1139. ** UPDATED for 1.6 beta1 **
  1140. Feb 7, 1997
  1141.  
  1142. Features in 1.6 beta1 over the 1.6 alpha releases:
  1143. Changes to -qw option
  1144.     Support for user names and user ids
  1145.     Defaults values ("qstat") for user id and password.  Most of
  1146.     the QW masters have a qstat user with "qstat" as the password.
  1147. New option -qws
  1148.     Fetch and display stats for a single QW server.
  1149. New option -qwuserinfo
  1150.     Fetch and display user information from a QW master.
  1151. New option -qwseeninfo
  1152.     Fetch and display user information from a QW master.
  1153. bug fix
  1154.     Better handling of error packets from QW servers and masters.
  1155.     No more "huh?"
  1156.  
  1157. Thanks to Kris Nosack (kn@byu.edu) for comments and bug reports.
  1158.  
  1159. ** The following has been updated to reflect the changes and
  1160. ** additions in 1.6 beta1.
  1161.  
  1162.  
  1163. The main feature of this release is support for QuakeWorld.  A couple
  1164. minor bug fixes have also been made.
  1165.  
  1166. QuakeWorld support has been integrated into qstat.  You can query
  1167. normal Quake servers and QuakeWorld servers at the same time.  A new
  1168. prefix is used to distinguish between the different server types.
  1169.  
  1170.  
  1171. New options
  1172. -----------
  1173.  
  1174. All of these options can be used together in a single run of qstat.
  1175.  
  1176. To query QuakeWorld servers, use the -qw or -qws options.  The first
  1177. will get the list of QW servers from a QW master and query all of
  1178. them for status information.  The latter, -qws, will just query the
  1179. given QW server for status information.  These options are the only
  1180. way to get QuakeWorld server stats.
  1181. Hosts added with -f or on the command-line are treated like normal
  1182. Quake servers.
  1183.  
  1184. -qw host:port:uid:password
  1185.  
  1186. host        host name or IP address of QW Master Server
  1187. port        port number (defaults to 27000 if blank)
  1188. uid        valid QW user id or name on host
  1189. password    password for user
  1190.  
  1191. To get the server list from a master server, qstat needs a valid login
  1192. on the master.  A default login and password can be used if the uid and
  1193. password are not given.  The default is "qstat" for both values.  All
  1194. the known masters should have a "qstat" user with the same password.
  1195.  
  1196. -qws host:port
  1197.  
  1198. host        host name or IP address of QW server
  1199. port        post number (defaults to 27500 if blank)
  1200.  
  1201. If you don't use -qw or -qws, qstat will behave identically to qstat 1.5.
  1202.  
  1203. I use the following command to query QW servers:
  1204.  
  1205.     qstat -qw 204.50.178.66
  1206.  
  1207.  
  1208. To get QuakeWorld user information, use the -qwuserinfo and -qwseeninfo
  1209. options.  A QW login is not required to get user information.
  1210.  
  1211. -qwuserinfo host:port user-list
  1212.  
  1213. host            host name or IP address of QW Master Server
  1214. port            port number (defaults to 27000 if blank)
  1215. user-list    list of QW users (ids or names)
  1216.  
  1217. The display for a user will include everything in their record.  The
  1218. color name option (-ncn) is applied to 'topcolor' and 'bottomcolor'.
  1219. The user-list must be _one_ command line argument; use double-quotes
  1220. to enclose multiple users if they're separated with spaces.  You can
  1221. also use back-slashes to separate users.
  1222.  
  1223. -qwseeninfo host:port user-list
  1224.  
  1225. host            host name or IP address of QW Master Server
  1226. port            port number (defaults to 27000 if blank)
  1227. user-list    list of QW users (ids or names)
  1228.  
  1229. The last seen information comes directly from the master, qstat does
  1230. not perform any additional formatting.  The user-list should be _one_
  1231. command line argument; use double-quotes to enclose multiple users if
  1232. they're separated with spaces.  You can also use back-slashes to
  1233. separate users.
  1234.  
  1235. To get user information for me and qstat and find out who was last
  1236. slagging me:
  1237.  
  1238.     qstat -qwuserinfo 204.50.178.66 "Act-Steve qstat" -qwseeninfo 204.50.178.66 Act-Steve
  1239.  
  1240.  
  1241. Display format
  1242. --------------
  1243.  
  1244. The QW servers return different information than the normal servers,
  1245. so I had to extend the output style.  The first field of a server
  1246. status line is the server type:
  1247.  
  1248. QS    normal Quake server
  1249. QW    QW server
  1250. QWM    QW master server
  1251. QWU    QW user information
  1252. QWE    QW last seen information
  1253.  
  1254. The for-human-comsumption output is pretty self-evident, but the raw
  1255. output needs some explanation.  The output for normal Quake servers
  1256. has not changed.
  1257.  
  1258. QWM server status fields
  1259.     server address, number of QW servers
  1260.     [the uid and password are removed before display, no rules or
  1261.      player info is output]
  1262.  
  1263. QW server status
  1264.     server address, server name, map name, max players,
  1265.     current players, avg response time, number of retries
  1266.     [If -R is specified, a line of server rules is output.  The
  1267.      format is the same as for normal servers: key1=value1,key2=value2]
  1268.     [If -P is specified, one line is output for each player.]
  1269.     player uid, player name, frags, connect time, shirt color,
  1270.     pants color, ping, skin
  1271.  
  1272. QWU
  1273.     key1, value1, key2, value2, ...
  1274.     [The first seven keys will always be the same; name, userid,
  1275.      skill, efficiency, rank, frags, deaths.  But I would not count
  1276.      on that as I'm a fickle programmer and may change my mind.]
  1277.  
  1278. QWE
  1279.     seen-info
  1280.     [qstat just displays the string returned by the master.  The
  1281.      user name is embedded in there, but you'll have to parse it
  1282.      out.]
  1283.  
  1284. All the existing display options apply to QW servers.
  1285.  
  1286. Run qstat by hand to better understand the new output before trying to
  1287. incorporate it into your web page.
  1288.  
  1289.  
  1290. Errors
  1291. ------
  1292.  
  1293. QStat has a variety of ways of reporting errors such as time outs
  1294. and server errors.  If you see something between angle brackets,
  1295. <like this>, that's an error message directly from a server or
  1296. master.
  1297.  
  1298. Some day I'll document how errors are displayed in the raw format.
  1299. But for now I trust you web masters can figure it out
  1300.  
  1301.  
  1302. Final words
  1303. -----------
  1304.  
  1305. This version is very beta.  If you would like qstat to work differently
  1306. let me know.  And of course, if you have problems or questions, please
  1307. let me know.
  1308.  
  1309. Known bugs
  1310. ----------
  1311.  
  1312. qstat often fails to get all the QW server lists if multiple QW masters
  1313. are specified.  You'll see a TIMEOUT or "no response" from the QWM when
  1314. this happens.  I have a fix in mind, but I'm tired and there's beer
  1315. waiting for me at home.
  1316.  
  1317. An error is not displayed if qstat times out getting user or last seen
  1318. information.
  1319.  
  1320.  
  1321. Steve Jankowski
  1322. steve@activesw.com
  1323.  
  1324.  
  1325. ---
  1326.  
  1327. Version 1.5 adds player info, server rules, response times, and
  1328. performance improvements.  A large number of flags were added to support
  1329. different output formatting options.  Web masters should check out
  1330. the -raw option which displays all server info with your choice
  1331. of delimiter.  Updated copyright to be more specific about allowable
  1332. use.  Updated the web page with links to Quake protocol pages.
  1333.  
  1334. Version 1.4 includes a number of new features and bug fixes.  There is
  1335. now support for Linux, flags to set retry timeout and interval, flags
  1336. to limit output to running or not full servers.  A bug was fixed which
  1337. caused qstat to have a long delay the first time it was run on Windows
  1338. 95/NT.
  1339.  
  1340. Version 1.3 fixes a bug introduced in 1.2 and adds a Windows 95/NT
  1341. executable.  The bug caused DOWN servers to be reported multiple
  1342. times.
  1343.  
  1344. Version 1.2 fixes the bug with running out of file descriptors.
  1345.